package br.com.fip.pp.exoticacalcados.dao;

import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.OneToOne;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.annotations.Cascade;

import br.com.fip.pp.exoticacalcados.entidades.Cliente;
import br.com.fip.pp.exoticacalcados.repositorio.Repositorio;
import br.com.fip.pp.exoticacalcados.util.HibernateUtil;

public class ClienteDao extends GenericDAO<Cliente> implements Serializable {

	public ClienteDao() {
		super(Cliente.class);
		this.session = HibernateUtil.getSessionFactory().openSession();
	}

	private Session session;
	private Transaction trans;
	private List<Cliente> lista = new ArrayList<Cliente>();
	private Class<Cliente> classe;

	public List<Cliente> listar() {

		try {

			Criteria cri = getCurrentSession().createCriteria(Cliente.class);
			lista = cri.list();

		} catch (RuntimeException e) {
			trans.rollback();
			e.printStackTrace();
		}

		return lista;
	}

	public void deletar(Cliente cliente) {
		try {

			this.trans = getCurrentSession().beginTransaction();
			Cliente novo = (Cliente) session.load(Cliente.class, cliente.getId());
			session.delete(novo);
			cliente.setId(cliente.getId());
			getCurrentSession().delete(cliente);

			trans.commit();
		} catch (Exception e) {
			trans.rollback();
			e.printStackTrace();
		} finally {
			getCurrentSession().close();
		}

	}

}
